import * as React from "react";

// SFC已经被废弃，无状态的函数式写法（纯组件-SFC）
const TestPage: React.SFC = () => {
  return (
    <div>
      this is test page.
    </div>
  );
};


// React.FC<>的在typescript使用的一个泛型，FC就是FunctionComponent的缩写，是函数组件
const TestPage2: React.FC = () => {
  return (
    <div>
      this is test page.
    </div>
  );
};

const TestPage3: React.FC = function () {
  return (
    <div>
      this is test page.
    </div>
  );
};

export interface IExample {
  name: string;
}

// 正确的写法一
const example: React.FC<IExample> = ({ name }) => {
  return (<div>{name}</div>)
};

// 正确的写法二
const example2: React.FunctionComponent<IExample> = ({ name }) => {
  return (<div>{name}</div>)
};


// 完整的方法签名
let myAdd: (x: number, y: number) => number = function (x: number, y: number): number { return x + y; };

// 泛型接口
const example3: React.FC<IExample> = function ({ name }) {
  return null
  // return (<div>{name}</div>)
};


console.log(example({ name: '' }), example2({ name: '' }), <TestPage2 />)



function identity<T>(arg:T) : T {
  return arg
}

let identity2:<T>(arg:T) => T = identity


export default TestPage;